﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using WindowsFormApplication.FormBase;
using WindowsFormsView;
using WindowsFormsPresenter.Restaurant;

namespace WindowsFormApplication.FormCategory
{
    public partial class frmRestaurantDetail : frmBaseCategoryDetail, IRestaurantView
    {
        private RestaurantPresenter _restaurantPresenter;

        public string RestaurantID { get; set; }

        public string RestaurantCode
        {
            get { return txtRestaurantCode.Text; }
            set { txtRestaurantCode.Text = value; }
        }

        public string RestaurantName
        {
            get { return txtRestaurantName.Text; }
            set { txtRestaurantName.Text = value; }
        }

        public string Address
        {
            get { return txtAddress.Text; }
            set { txtAddress.Text = value; }
        }

        public string PhoneNumber
        {
            get { return txtPhoneNumber.Text; }
            set { txtPhoneNumber.Text = value; }
        }

        public string Fax
        {
            get { return txtFax.Text; }
            set { txtFax.Text = value; }
        }

        public string Email
        {
            get { return txtEmail.Text; }
            set { txtEmail.Text = value; }
        }

        public string Website
        {
            get { return txtWebsite.Text; }
            set { txtWebsite.Text = value; }
        }

        public string TaxCode
        {
            get { return txtTaxCode.Text; }
            set { txtTaxCode.Text = value; }
        }

        public bool IsAgencies
        {
            get { return chkIsAgencies.Checked; }
            set { chkIsAgencies.CheckedValue = value; }
        }

        public bool IsActive
        {
            get { return chkIsActive.Checked; }
            set { chkIsActive.CheckedValue = value; }
        }

        public string Description
        {
            get { return txtDescription.Text; }
            set { txtDescription.Text = value; }
        }

        protected override void InitData()
        {
            _restaurantPresenter = new RestaurantPresenter(this);

            if (KeyValue != null)
                _restaurantPresenter.Display(KeyValue);
        }

        protected override bool ValidData()
        {
            if (string.IsNullOrEmpty(RestaurantCode))
            {
                ShowMessageBox("Bạn chưa nhập mã nhà hàng, chi nhánh !", "Thông báo thay đổi dữ liệu !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtRestaurantCode.Focus();
                return false;
            }
            if (string.IsNullOrEmpty(RestaurantName))
            {
                ShowMessageBox("Bạn chưa nhập tên nhà hàng, chi nhánh !", "Thông báo thay đổi dữ liệu !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtRestaurantName.Focus();
                return false;
            }
            return true;
        }

        protected override bool SaveData()
        {
            try
            {
                if (eActionMode == ActionMode.AddNew)
                {
                    _restaurantPresenter.Save();
                    ShowMessageBox("Thêm mới dữ liệu thành công !", "Thông báo thay đổi dữ liệu !", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    _restaurantPresenter.Save();
                    ShowMessageBox("Sửa dữ liệu thành công !", "Thông báo thay đổi dữ liệu !", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            catch (ApplicationException ex)
            {
                ShowMessageBox(ex.Message, "Thông báo thay đổi dữ liệu !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            return true;
        }

        public frmRestaurantDetail()
        {
            InitializeComponent();

            _restaurantPresenter = new RestaurantPresenter(this);
        }
    }
}